package dongshi.daddy.templatemethod.uml;

// 抽象类
public abstract class AbstractClass {
    // 模板方法
//    public void templateMethod() {
    // 模板方法，设置为final的防止子类override
    public final void templateMethod() {
        specificMethod();
        abstractMethod1();
        abstractMethod2();
        hookMethod();
    }

    // 钩子方法，子类可根据实际情况选择是否要试下该方法
    public void hookMethod() {
    }

    // 具体方法，父类提供具体的实现，设置为private对子类不可见并且不可以重写
//    public void specificMethod() {
    private void specificMethod() {
        System.out.println("抽象类中的具体方法被调用...");
    }

    // 抽象方法1
    public abstract void abstractMethod1();

    // 抽象方法2
    public abstract void abstractMethod2();
}
